package cn.nucun.utils;

import cn.nucun.base.WindowsRem;
import com.intellij.notification.*;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.ui.Messages;

import static cn.nucun.entity.constant.SocketConstant.HttpRequest.REQ_HTTP_DO_REGISTER;
import static cn.nucun.entity.constant.SocketConstant.Systems.SYS_USER_KEY;

/**
 * 插件基础公共组件
 *
 * @author chen
 */
public class PlugsUtils {
    /**
     * event log
     */
    private static final NotificationGroup NOTIFICATION_GROUP = new NotificationGroup("ApiDoc.NotificationGroup", NotificationDisplayType.BALLOON, true);


    /**
     * 警告浮窗
     *
     * @param msg 警告内容
     */
    public static void modalMessageWarn(String msg) {
        Messages.showMessageDialog(msg, "警告", Messages.getWarningIcon());
    }

    /**
     * 错误提示浮窗
     *
     * @param msg 错误提示内容
     */
    public static void modalMessageError(String msg) {
        Messages.showMessageDialog(msg, "错误", Messages.getErrorIcon());
    }

    /**
     * 警告log提示
     *
     * @param message 提示内容和链接内容    <b><a href="http://nucun.cn">百度一下</a></b>
     * @param project 触发体 可空
     */
    public static void warnNotify(String message, Project project) {
        Notifications.Bus.notify(NOTIFICATION_GROUP.createNotification("警告", message, NotificationType.WARNING, new NotificationListener.UrlOpeningListener(true)), project);
    }

    /**
     * 可以携带触发链接的 log提示
     *
     * @param message 提示内容和链接内容   <b><a href="http://nucun.cn">百度一下</a></b>
     * @param project 触发体 可空
     */
    public static void infoNotify(String message, Project project) {
        Notifications.Bus.notify(NOTIFICATION_GROUP.createNotification("提示", message, NotificationType.INFORMATION, new NotificationListener.UrlOpeningListener(true)), project);
    }

    /**
     * 错误log提示
     *
     * @param message 提示内容和链接内容    <b><a href="http://nucun.cn">百度一下</a></b>
     * @param project 触发体 可空
     */
    public static void errorNotify(String message, Project project) {
        Notifications.Bus.notify(NOTIFICATION_GROUP.createNotification("错误", message, NotificationType.ERROR, new NotificationListener.UrlOpeningListener(true)), project);
    }

    /**
     * 验证当前是否已经登录
     *
     * @return true 已经登录
     */
    public static boolean checkLogin() {
        if (WindowsRem.MY == null) {
            if (System.getProperty(SYS_USER_KEY) == null) {
                PlugsUtils.infoNotify("请通过 tools > Nucun Login 登录账号，或者<b><a href=\"" + REQ_HTTP_DO_REGISTER + "\">注册账号</a></b>", null);
                return false;
            }
            WindowsRem.MY = System.getProperty(SYS_USER_KEY);
        }
        return true;
    }


}
